package cn.knightzz.mapper;

import cn.knightzz.entity.SysEvent;
import cn.knightzz.vo.EventCountVO;
import cn.knightzz.vo.IndexEventVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author knightzz
 * @since 2021-05-01
 */
public interface SysEventMapper extends BaseMapper<SysEvent> {

    IPage<SysEvent> selectByPage(Page<SysEvent> page, String query);

    List<SysEvent> getEventByStatus(Long userId, Integer status, String query);

    SysEvent getEventById(Long eventId);

    /**
     * 管理员用户获取当前辖区内的事件信息
     * @param area
     * @param query
     * @param startDate
     * @param endDate
     * @return
     */
    List<SysEvent> selectByAdmin(String area, String query, String startDate, String endDate);

    /**
     * 其他用户获取当前辖区内自己上传的数据
     * @param area
     * @param handleId
     * @param query
     * @param startDate
     * @param endDate
     * @return
     */
    List<SysEvent> selectByOther(String area, Long handleId,String query, String startDate, String endDate);

    IPage<SysEvent> selectEvent(Page<SysEvent> page, String query);

    /**
     * 分组统计当前辖区内所有网格员的事件完成情况
     * @param page
     * @param area
     * @param nickname
     * @return
     */
    IPage<EventCountVO> selectCountEvent(Page<EventCountVO> page, String area, String nickname);

    /**
     * 获取前5个已完成的事件信息
     * @return
     */
    List<IndexEventVO> selectEventCountByIndex();

    List<IndexEventVO> selectEventStatusByIndex();
}
